import getToken from '../utils/wxToken'

// 此vm参数为页面的实例，可以通过它引用vuex中的变量
module.exports = (vm) => {
    // 初始化请求配置
    uni.$u.http.setConfig((config) => {
        /* config 为默认全局配置*/
        config.baseURL = 'https://api-hmugo-web.itheima.net/api/public/v1'; /* 根域名 */
        return config
    })

    // 请求拦截器
    // 并不是所有页面都需要携带token，设置白名单让不需要token的页面不用携带token
    uni.$u.http.interceptors.request.use(async (config) => { // 可使用async await 做异步操作
        uni.showLoading({ title: "加载中" })
        // 白名单
        const whiteList = [
            "/home/swiperdata",
            "/home/catitems",
            "/home/floordata",
            "/categories",
            "/goods/search",
            "/goods/detail",
            "/users/wxlogin"
        ]
        console.log('请求拦截器生效')
        // 如果当前url在白名单中，就不需要携带token，不在的话就需要携带token
        if (!whiteList.includes(config.url)) {
            // 通过wxToken中的方法获取token
            // vm等同于this
            const token = await getToken()
            console.log(token)
            // 设置请求头
            config.header = { Authorization: token }
        }
        return config
    }, config => { // 可使用async await 做异步操作
        return Promise.reject(config)
    })

    // 响应拦截器
    uni.$u.http.interceptors.response.use((response) => {
        uni.hideLoading()
        return response.data
    }, (response) => {
        /*  对响应错误做点什么 （statusCode !== 200）*/
        console.log(response)
        return Promise.reject(response)
    })
}